#include <stdio.h>
#include <stdlib.h>    // fuer  malloc()

// zur Fehler-Meldungen
#include <sys/errno.h> 
#include <string.h>

//sockets
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netdb.h>
#include <arpa/inet.h> // fuers inet_addr()

// Semaphore und SharedMemory
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>

union semun {
	int              val;    /* Value for SETVAL */
	struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
	unsigned short  *array;  /* Array for GETALL, SETALL */
	struct seminfo  *__buf;  /* Buffer for IPC_INFO
					(Linux specific) */
	};

// Mit hilfe der Funktion getSharedMemory() wird eine neue Shared Memory erzeugt
int getSharedMemory(int key, int permission, int size);

// Mit hilfe der Funktion initSharedMemory() wird jedes Byte des  neuen Shared Memory mit 0 initialisiert
void initSharedMemory(void *pointer, int size);

// Mit hilfe der Funktion getSemaphor() wird eine Semaphor(Array) erzeugt
int getSemaphor(int key, int number, int permission);

// Mit hilfe der Funktion initSemaphor() der erzeugte Semaphor initialisiert
void initSemaphor(int semid, int semnum, int value);
// Diese Funktion gibt einen Semaphor frei,sie erhoet den Semaphor um 1
void up(int semid, int semnum);
// Diese Funktion fordert einen Semaphor an ,sie erniedrigt den semaphor um  1
void down(int semid, int semnum);
// Diese Methode erzeugt mit Hilfe von socket(),setsoket(),bind() einen UDP-Socket
int getSocket(int sPort);








